Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
14 / 14 |
| AttributeGroupVoter | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
9 | |
100.00% |
14 / 14 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| vote | |
100.00% |
1 / 1 |
5 | |
100.00% |
9 / 9 |
|||
| supports | |
100.00% |
1 / 1 |
2 | |
100.00% |
2 / 2 |
|||
| voteOnAttribute | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| <?php | |
| /* | |
| * This file is part of the Akeneo PIM Enterprise Edition. | |
| * | |
| * (c) 2014 Akeneo SAS (http://www.akeneo.com) | |
| * | |
| * For the full copyright and license information, please view the LICENSE | |
| * file that was distributed with this source code. | |
| */ | |
| namespace Akeneo\Pim\Permission\Bundle\Voter; | |
| use Akeneo\Pim\Permission\Bundle\Manager\AttributeGroupAccessManager; | |
| use Akeneo\Pim\Permission\Component\Attributes; | |
| use Akeneo\Pim\Structure\Component\Model\AttributeGroupInterface; | |
| use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; | |
| use Symfony\Component\Security\Core\Authorization\Voter\Voter; | |
| use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; | |
| /** | |
| * Attribute group voter, allows to know if attributes of a group can be edited or consulted by a | |
| * user depending on his user groups | |
| * | |
| * @author Nicolas Dupont <nicolas@akeneo.com> | |
| */ | |
| class AttributeGroupVoter extends Voter implements VoterInterface | |
| { | |
| /** | |
| * @var AttributeGroupAccessManager | |
| */ | |
| protected $accessManager; | |
| /** | |
| * @param AttributeGroupAccessManager $accessManager | |
| */ | |
| public function __construct(AttributeGroupAccessManager $accessManager) | |
| { | |
| $this->accessManager = $accessManager; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function vote(TokenInterface $token, $object, array $attributes) | |
| { | |
| $result = VoterInterface::ACCESS_ABSTAIN; | |
| if (!($object instanceof AttributeGroupInterface)) { | |
| return $result; | |
| } | |
| foreach ($attributes as $attribute) { | |
| if ($this->supports($attribute, $object)) { | |
| $result = VoterInterface::ACCESS_DENIED; | |
| if ($this->voteOnAttribute($attribute, $object, $token)) { | |
| return VoterInterface::ACCESS_GRANTED; | |
| } | |
| } | |
| } | |
| return $result; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function supports($attribute, $subject) | |
| { | |
| return in_array($attribute, [Attributes::VIEW_ATTRIBUTES, Attributes::EDIT_ATTRIBUTES]) && | |
| $subject instanceof AttributeGroupInterface; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function voteOnAttribute($attribute, $subject, TokenInterface $token) | |
| { | |
| return $this->accessManager->isUserGranted($token->getUser(), $subject, $attribute); | |
| } | |
| } |